+2007-09-07 Matthias Clasen <mclasen@redhat.com>
+
+ * gtk/gtkprintunixdialog.c: Add an internal child name for
+ the notebook, so that GtkBuilder can be used to add custom tabs.
+ (#472951, Christian Persch)
+
2007-09-07 Matthias Clasen <mclasen@redhat.com>
* gtk/updateiconcache.c (get_image_meta_data_size): Don't
Printing support was added in GTK+ 2.10.
</para>
+<refsect2 id="GtkPrintUnixDialog-BUILDER-UI"><title>GtkPrintUnixDialog as GtkBuildable</title>
+<para>
+The GtkPrintUnixDialog implementation of the GtkBuildable interface exposes its
+@notebook internal children with the name "notebook".
+</para>
+<example>
+<title>A <structname>GtkPrintUnixDialog</structname> UI definition fragment.</title>
+<programlisting><![CDATA[
+<object class="GtkPrintUnixDialog" id="dialog1">
+ <child internal-child="notebook">
+ <object class="GtkNotebook" id="notebook">
+ <child>
+ <object class="GtkLabel" id="tabcontent">
+ <property name="label">Content on notebook tab</property>
+ </object>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="tablabel">
+ <property name="label">Tab label</property>
+ </object>
+ <packing>
+ <property name="tab_expand">False</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+</object>
+]]></programlisting>
+</example>
+</refsect2>
+
<!-- ##### SECTION See_Also ##### -->
<para>
#GtkPageSetupUnixDialog, #GtkPrinter, #GtkPrintJob
#include "gtkalignment.h"
#include "gtklabel.h"
#include "gtkeventbox.h"
+#include "gtkbuildable.h"
#include "gtkprintbackend.h"
#include "gtkprinter-private.h"
static gboolean dialog_get_reverse (GtkPrintUnixDialog *dialog);
static gint dialog_get_n_copies (GtkPrintUnixDialog *dialog);
+/* GtkBuildable */
+static void gtk_print_unix_dialog_buildable_init (GtkBuildableIface *iface);
+static GObject *gtk_print_unix_dialog_buildable_get_internal_child (GtkBuildable *buildable,
+ GtkBuilder *builder,
+ const gchar *childname);
+
enum {
PROP_0,
PROP_PAGE_SETUP,
gint current_page;
};
-G_DEFINE_TYPE (GtkPrintUnixDialog, gtk_print_unix_dialog, GTK_TYPE_DIALOG)
+G_DEFINE_TYPE_WITH_CODE (GtkPrintUnixDialog, gtk_print_unix_dialog, GTK_TYPE_DIALOG,
+ G_IMPLEMENT_INTERFACE (GTK_TYPE_BUILDABLE,
+ gtk_print_unix_dialog_buildable_init))
+
+static GtkBuildableIface *parent_buildable_iface;
static gboolean
is_default_printer (GtkPrintUnixDialog *dialog,
gtk_list_store_remove (GTK_LIST_STORE (priv->printer_list), iter);
}
+static void
+gtk_print_unix_dialog_buildable_init (GtkBuildableIface *iface)
+{
+ parent_buildable_iface = g_type_interface_peek_parent (iface);
+
+ iface->get_internal_child = gtk_print_unix_dialog_buildable_get_internal_child;
+}
+
+static GObject *
+gtk_print_unix_dialog_buildable_get_internal_child (GtkBuildable *buildable,
+ GtkBuilder *builder,
+ const gchar *childname)
+{
+ if (strcmp (childname, "notebook") == 0)
+ return G_OBJECT (GTK_PRINT_UNIX_DIALOG (buildable)->priv->notebook);
+
+ return parent_buildable_iface->get_internal_child (buildable, builder, childname);
+}
+
static void
printer_status_cb (GtkPrintBackend *backend,
GtkPrinter *printer,